#include "micro_logic_handle.h"

void micro_energy_handle(u8 value);
MICRO_MODE micro_mode_handle[NUM_MICRO_SSP]=
{
    {}, //0 空
    {micro_energy_handle},// 1 能量 
};

void micro_logic_handle(SYS_OPT_KEY opt)
{
    static int time;
    static u8 value;
    if(app_logic_get_last_ssp() != app_logic_get_ssp())//如果是第一次进入
    {
        LOG_INFO("mode_micro_handle\n");
        app_logic_set_last_ssp(app_logic_get_ssp()); //将上次的状态与本次的状态同步
        disp_clear_light();
        set_custom_recssp(0); //强制复位
        set_audio_soure(0x01); //设置麦克风为本地模式
        time =arch_os_ms_now();
        value=get_adc_read_value();
    }

    if (get_audio_soure()==0x01) //本地音频源
    {
        if(get_senst_level() != 0) //如果速率是0 则不能读取ADC度数
        {
            if(arch_os_ms_elapsed(time) >(1*1000/get_senst_level())) //延时时间 最慢1s一变 最快 10ms一变
            {  
                value=get_adc_read_value();
                time =arch_os_ms_now();
            }
        }
    }


    if(micro_mode_handle[get_micro_ssp()].handle)
    {
        micro_mode_handle[get_micro_ssp()].handle(value);
    }

    if (opt.oepation == OPT_POWER_TURNOFF) //关机
    {
        app_logic_set_ssp(SSP_POWER_OFF);
    }
    else if(opt.oepation == OPT_OUT_MIC) //恢复到音乐模式之前的状态
    {
        app_logic_set_ssp(SSP_MODE_SCENE);
    }
    else if(opt.oepation == OPT_GO_NEXT) //下一个
    {

    }
}

void micro_energy_handle(u8 value)
{
    u8 send_buf[BUF_SIZE];
    u8 temp_buf[BUF_SIZE];
    int num;
    bzero(send_buf,BUF_SIZE);
    bzero(temp_buf,BUF_SIZE);
    num = (int)((value)*get_color_length()/100);
    num = (num/3)*3; //强制保证是3的倍数
    micro_light_energy_handle(temp_buf);
    memcpy(send_buf,temp_buf,num);
    logic_send_light_msg(send_buf,get_color_length());
}